/*
 * 本类作用：mina框架:编码器，用于发送数据时打包
 * 
 * 作者：袁小杰
 * 博客：http://blog.csdn.net/undoner
 * GIT：https://git.oschina.net/undoner
 * QQ：15137281
 * 
 */
package org.mina.server.codec;

import java.nio.charset.Charset;

import org.apache.log4j.Logger;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;

/**
 * 编码器，用于发送数据时打包
 * */
public class MsgEncoder extends ProtocolEncoderAdapter {

	private final Charset charset;

	static Logger log = Logger.getRootLogger();

	public MsgEncoder(Charset charset) {
		this.charset = charset;
	}

	public void encode(IoSession session, Object message,
			ProtocolEncoderOutput out) throws Exception {
		log.debug("MsgEncoder.encode()");
		
		// 将message转换为实体对象
		MsgEntity me = (MsgEntity) message;
		
		// 声明IoBuffer
		IoBuffer ib = IoBuffer.allocate(me.getContent().length());

		// 设置IoBuffer可自动扩展
		ib.setAutoExpand(true);

		// 写正文
		if (me.getContent() != null) {
			ib.put(me.getContent().getBytes());
		}

		// 重设IoBuffer的指针，到头
		ib.flip();

		out.write(ib);
	}
	
}
